package leetcode_周赛._2021._202105._20210530;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/5/30 10:38
 * 插入后的最大值
 * 算法：字符串
 * 如果是正数，从前往后遍历，只需要插入到比它小的第一个数字的前面，当 x 比所有的数都小时，要插入到最后一个
 * 如果是负数，从后往前遍历，要么插在比它小的第一个数的后面，要么插在比它大的最后一个数字的位置，后者优先
 */
public class _5773 {
    public static void main(String[] args) {
        System.out.println(new _5773().maxValue("-623355838291666784697646435286348117954669853843419139176788512971261739334812527945123248768573842542254577556168176362244548633661178639859544854989629388336548582262548271999263336691443775269833254981244749161842126887951831727929741369938276771952421424696148428444859964529283513732959849832776339672624114632543619927661754798896262421999112259844914591197443593956668135511513766568456867557689786157476977765692838963826788617894349747966558524463153129558797244178298196936313492693425344176436396735839974893512936727712649336336759375141813779247166255422788871515496129735534751227359278667661844666323129755191351224561591635526384991331474677376739812359633565175596674858216191238931148393199534933671944441182141442249",
        6));
        System.out.println(new _5773().maxValue("9", 8));
    }

    public String maxValue(String n, int x) {
        boolean flag = n.charAt(0) == '-';
        int index = n.length();
        if (flag) {
            index = 1;
            if (n.charAt(1) - '0' <= x) {
                boolean f = false;
                for (int i = n.length() - 1; i >= 1; i--) {
                    int c = n.charAt(i) - '0';
                    if (c < x && !f) {
                        index = i + 1;
                        f = true;
                    }
                    if (c > x) index = i;
                }
            }
        } else {
            for (int i = 0; i < n.length(); i++) {
                int c = n.charAt(i) - '0';
                if (c < x) {
                    index = i;
                    break;
                }
            }
        }
        StringBuilder ans = new StringBuilder(n);
        ans.insert(index, x);
        return ans.toString();
    }

}
